var express = require('express');
const {
  Collection
} = require('mongodb');
var router = express.Router();
// 引入工具
var mgdb = require("../../../utils/mongodb");

var jwt = require("../../../utils/jwt");

var bcrypt = require("../../../utils/bcrypt")

var path = require('path')

var fs = require('fs')

var {
  open
} = require('../../../utils/mongodb')

// router.post('/', function (req, res, next) {
//   console.log("register");

//   // 使用工具
//   // 开库
//   mgdb.open({
//     // 查询的集合名
//     collectionName: "banner"
//   }).then(
//     ({
//       // 数据的集合
//       collection,
//       // 返回的数据库
//       client
//     }) => {
//       // 查询的条件
//       // find({规则},{配置})
//       collection.find({}, {
//         sort: {
//           age: 1
//         }
//       }).toArray((err, result) => {
//         console.log(result);
//         // 关库
//         client.close();
//       })
//     }
//   )

//   // 查列表
//   // mgdb.findList({
//   //   collectionName:"banner",
//   //   _page:0,_limit:10,_sort:"time",q:"1"
//   // }).then(
//   //   data => console.log(data)
//   // ).catch(
//   //   err => console.log(err)
//   // )

//   // 查详情
//   // mgdb.findDetail({
//   //   collectionName: 'banner',
//   //   _id: '6173fc7ba047df157297f248'
//   // }).then(
//   //   res => console.log(res)
//   // ).catch(
//   //   err => console.log(err)
//   // )

// });

// await等待，将异步的代码执行结束之后同步去执行下面的代码
// router.post("/", async(req,res,next)=>{
// console.log(req.query._page)
// console.log(req.query._limit)

// let {_page,_limit,q,sort}=req.query;
// try{
//   console.log("files",req.files);
// let detial = await mgdb.findDetail({collectionName :"banner",_id:'6173fc7ba047df157297f248'})
//   let detial = await mgdb.findList({collectionName :"banner",_page,_limit,q,sort})
//   console.log("reg",detial);
// }catch(err){
//   console.log("err",err);
// }
// // 生成token
// let token = jwt.sign({username:'test1',_id:"12345678901234567890123"})
// console.log(token);

// 密码的加密
// let hash = bcrypt.hashSync(req.body.password);

// 入库

// 校验密码
// 正确
//   console.log(bcrypt.compareSync(req.body.password,hash))
//   // 错误
//   console.log(bcrypt.compareSync(req.body.password,hash+"222"))

// })

// ----------------------------------

router.post('/', async (req, res, next) => {
  console.log('reg1111');

  // 获取用户名,密码,昵称等信息
  let {
    username,
    password,
    nikename
  } = req.body

  // 处理参数
  // 校验必传参数

  if (!username || !password) {
    res.send({
      err: 1,
      msg: '用户名和密码必传'
    })
    return;
  }

  nikename = nikename || '自动生成的昵称'

  // 服务器时间
  let time = Date.now();

  // 默认头像
  let icon = '/user/default.png'

  // 判断用户是否传了头像
  if (req.files && req.files.length > 0) {
    // 修改用户头像文件名
    fs.renameSync(
      req.files[0].path,
      req.files[0].path + path.parse(req.files[0].originalname).ext
    )

    icon = '/user/' + req.files[0].filename + path.parse(req.files[0].originalname).ext
  }

  // 连接数据库
  open({
    collectionName: 'users'
  }).then(({
    collection,
    client
  }) => {
    // 找用户名
    collection.find({
      username
    }).toArray((err, result) => {
      if (err) {
        res.send({
          err: 1,
          msg: '集合操作失败,请重试1'
        });
        client.close();
      } else {
        // 加密密码
        password = bcrypt.hashSync(password)
        // 用户不存在才能注册
        if (result.length === 0) {
          collection.insertOne({
            username,
            password,
            nikename,
            time,
            icon
          }, (err, result) => {
            if (!err) {
              res.send({
                err: 0,
                msg: '注册成功',
                data: {
                  _id: result.insertedId,
                  nikename,
                  time,
                  icon
                }
              })
              client.close();
            } else {
              res.send({
                err: 1,
                msg: '集合操作失败,请重试2'
              })
              client.close();
            }

          })

        } else {
          // 已存在不能注册的时候把传上来的图片删除
          if (icon.indexOf('default.png') === -1) {
            // 删除上传的图片
            // 注意不要删除默认图片
            fs.unlinkSync('./public' + icon)
          }
          res.send({
            err: 1,
            msg: '该用户已存在'
          })

          client.close();

        }

      }

    })

  }).catch(
    err => res.send(err)
  )

})

module.exports = router;